package vip.xiaonuo.smzq.modular.lifecycle.result;

import cn.hutool.core.lang.Dict;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Component;
import vip.xiaonuo.smzq.modular.lifecycle.constant.WebResultStatusConstant;

import java.util.List;

/**
 * 结果Wrapper
 */
@Component
public class ResultWrapper {
    public <T> Dict getPageResult(List<T> list, int total){
        return Dict.create().set("records",list).set("total",total);
    }

    /**
     * 根据是否成功得到结果状态
     * @param isSuccess 石佛成功
     * @param failedWebResultStatusConstant 失败的状态
     * @return
     */
    public  WebResult getWebResultBySuccess(boolean isSuccess, WebResultStatusConstant failedWebResultStatusConstant){
        WebResultStatusConstant webResultStatusConstantAtLast = isSuccess?WebResultStatusConstant.SUCCESS_OPERATION:failedWebResultStatusConstant;
        return new WebResult(webResultStatusConstantAtLast.getCode(),webResultStatusConstantAtLast.getMsg());
    }
    /**
     * 根据编辑是否成功得到结果状态
     * @param isSuccess 石佛成功
     * @return
     */
    public  WebResult getWebResultByEditSuccess(boolean isSuccess){
        return getWebResultBySuccess(isSuccess, WebResultStatusConstant.PROCESS_EDIT);
    }

    /**
     * 根据新增是否成功得到结果状态
     * @param isSuccess 石佛成功
     * @return
     */
    public  WebResult getWebResultByCreateSuccess(boolean isSuccess){
        return getWebResultBySuccess(isSuccess, WebResultStatusConstant.PROCESS_CREATE);
    }
    /**
     * 根据删除是否成功得到结果状态
     * @param isSuccess 石佛成功
     * @return
     */
    public  WebResult getWebResultByDelSuccess(boolean isSuccess){
        return getWebResultBySuccess(isSuccess, WebResultStatusConstant.PROCESS_DELETE);
    }

    /**
     * 得到成功结果
     * @param t
     * @return
     */
    public <T>  WebResult getSuccessWebResult(T t){
        return new WebResult<T>(WebResultStatusConstant.SUCCESS_OPERATION.getCode(),WebResultStatusConstant.SUCCESS_OPERATION.getMsg(),t);
    }

    /**
     * 通过web状态得到返回值
     * @param webResultStatusConstant
     * @param t 数据
     * @param <T>
     * @return WebResult
     */
    public <T> WebResult getWebResultByWebResultStatusConstant(WebResultStatusConstant webResultStatusConstant ,T t){
        return new WebResult<T>(webResultStatusConstant.getCode(),webResultStatusConstant.getMsg(),t);
    }

    /**
     * 得到成功失败
     * @param isSuccess 是否成功
     * @return
     */
    public WebResult getSuccessFailed(boolean isSuccess){
        return isSuccess?new WebResult<T>(WebResultStatusConstant.SUCCESS_OPERATION.getCode(),WebResultStatusConstant.SUCCESS_OPERATION.getMsg()):new WebResult<T>(WebResultStatusConstant.FAILE.getCode(),WebResultStatusConstant.FAILE.getMsg());
    }


}
